/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package util;

import entidades.Newlong;
import entidades.OrdenTrabajoView;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;

/**
 *
 * @author SBernardez
 */
public class GroupStatistic {

    public static long[] getCapacidadGrupo(int idNewLong1, int idNewLong2, int idNewLong3, Date fecha1, Date fecha2) throws SQLException{
        long res[] = new long[3];

		long capacidadFirst = Newlong.getCapacidad(idNewLong1, fecha1, fecha2);
                long capacidadSecond = Newlong.getCapacidad(idNewLong2, fecha1, fecha2);
                long capacidadThird = 0l;
                String sentenciaI = null;
                if (idNewLong3 != 0){
                    capacidadThird =Newlong.getCapacidad(idNewLong3, fecha1, fecha2);
                    sentenciaI = "SELECT SUM(cantidad) AS cantidadTotal FROM " + OrdenTrabajoView.VISTA_CON_CICLOS + " WHERE cn_newlong_id in (" + idNewLong1 + "," + idNewLong2 +"," + idNewLong3 + ") AND ciclo_newlong_fin >= " + MySQL.formatDateMin(fecha1) + " AND ciclo_newlong_fin < " + MySQL.formatDateMin(fecha2) + " ";
                }else{
                    sentenciaI = "SELECT SUM(cantidad) AS cantidadTotal FROM " + OrdenTrabajoView.VISTA_CON_CICLOS + " WHERE cn_newlong_id in (" + idNewLong1 + "," + idNewLong2 + ") AND ciclo_newlong_fin >= " + MySQL.formatDateMin(fecha1) + " AND ciclo_newlong_fin < " + MySQL.formatDateMin(fecha2) + " ";
                }
                long capacidadTotal = capacidadFirst + capacidadSecond + capacidadThird;


                String sentenciaF = "GROUP BY ciclo_newlong_id";

		// Obtengo la suma de las cantidades de los pedidos que estan adelantados.
		ResultSet result1 = MySQL.executeQuery(sentenciaI + " AND ciclo_newlong_fin < fecha_prometida " + sentenciaF);
		res[0] = (result1.next())? result1.getLong("cantidadTotal")*100/capacidadTotal : 0;

		// Obtengo la suma de las cantidades de los pedidos que estan al dia.
		ResultSet result2 = MySQL.executeQuery(sentenciaI + " AND ciclo_newlong_fin = fecha_prometida " + sentenciaF);
		res[1] = (result2.next())? result2.getLong("cantidadTotal")*100/capacidadTotal : 0;

		// Obtengo la suma de las cantidades de los pedidos que estan atrasados.
		ResultSet result3 = MySQL.executeQuery(sentenciaI + " AND ciclo_newlong_fin > fecha_prometida " + sentenciaF);
		res[2] = (result3.next())? result3.getLong("cantidadTotal")*100/capacidadTotal : 0;

		result1.getStatement().close();
		result2.getStatement().close();
		result3.getStatement().close();

		return res;
    }
}
